import kotlin.test.Test

/**
 * @description  https://www.bilibili.com/video/BV15N411A7P8?p=7
 * @author HOX4SGH
 * @date 2024/7/14
 */

class Test {

    fun sum(a: Int, b: Int): Int {
        return a + b
    }

    /**
     *  函数作为参数纳入
     */
    fun function(a: Int, b: Int, c: (Int) -> Unit) {
        c(a + b)
    }

    /**
     * 只有一个函数作为参数
     */
    fun measureTimeMillis(block: () -> Unit): Long {
        val start = System.currentTimeMillis()
        block()
        return System.currentTimeMillis() - start
    }


    @Test
    fun `test main`() {
        println(sum(1, 2))
    }

    @Test
    fun `test function`() {
        println(function(1, 2, {
            println(it) // lambda 表达式，it表示表达式接受的参数
        }))

        // 如果函数作为参数在最后面，可以把这个函数实参放在外面使用
        println(function(1, 2) {
            println(it) // lambda 表达式，it表示表达式接受的参数
        })
    }

    @Test
    fun `test time`() {

        // 可以直接去掉()，且把这个函数实参放在外面使用
        val time = measureTimeMillis {
            (1000L)
        }
        println(time)
    }

}

